Automated Presentation of directory src/exampleCode/stereo/GL_5.2/

HUB | Up | Download | Pheedbak | Tree | Topic | A-Z | Search | Hot | New


Please be aware: what appears below are the v4.2 DT bits in auto-generated html form.
As we have the time, we will update these to reflect the current "state of the world".


README file from "GL_5.2" directory

            ~4Dgifts/toolbox/src/exampleCode/stereo/GL_5.2 README


 ==============================================================================
 |                  README for StereoView Examples                            |
 |                                                             1/11/94        |
 ==============================================================================
 This example code is derived from an older 4Dgifts directory that showed
 how to use the original SGI StereoView implementation.  In IRIX 5.2 and
 later, SGI engineers enhanced the Xsgi X server to provide a more
 sophisticated stereo implementation on some graphics devices.  This
 new implementation will be refered to as software-stereo-in-a-window or
 SoftStereo.   It has many of the characteristics of hardware-stereo-in-a-
 window on Reality Engine but at a reduced resolution and price ;)
 
 At the time these demos were put together it appeared likely that 
 SoftStereo will be supported under IRIX 5.2 on:
===>>> THIS LIST IS SUBJECT TO ADDITIONS OR DELETIONS WITHOUT NOTICE.  <<<<====
                   XS
                   XZ
                   Elan
                   Extreme
                   Personal Iris GR1.2
		   XL (aka Indy graphics)
===>>> THIS LIST IS SUBJECT TO ADDITIONS OR DELETIONS WITHOUT NOTICE.  <<<<====
 
 STEREO API's
 
 SoftStereo will use an API closely resembling the one use on Reality
 Engine and in OpenGL.  It uses only one window with two internal buffers
 which may be refered to as STEREO_BUFFER_LEFT and STEREO_BUFFER_RIGHT.
 The original SGI stereo implementation uses two windows which are normally
 refered to as top and bottom.
 
 SoftStereo offers a number of advantages over the old stereo implementation:
 
     - X and Motif windows are displayed to both eyes without any extra
       effort on the part of the application
 
     - All windows are usable and there is no transparency or wrap around
       between top and bottom buffers like the old stereo method
 
     - The API, when fully implemented, will be easier to use and 
       consistent with stereo API's on Reality Engine and OpenGL.
 
 Our apologies when you encounter example code that is hastily prepared
 to use the new SoftStereo mode.  Also apologies for the mixing of new
 and old stereo API examples in one directory.  It is hoped the examples
 provided for SoftStereo should be usable in perpetuity although somewhat
 more streamlined versions may be available in the future.
 
 The next release will hopefully provide better coordinated examples of:
 
     - Traditional stereo
     - SoftStereo
     - hardware-stereo-in-a-window
     - OpenGL stereo
 
 Promises, promises.
 
 ==============================================================================
 CONTENTS
 ==============================================================================
 
     This directory contains source for the following programming examples:
 
     libstereo.a : contains a set of support routines for programming stereo
                   --built from onoffstereo.c, stereopersp.c, stereowin.c,
                   and stereo.h
           backg : creates a simple stereo background
            grid : draws a simple stereo diagnostic program grid (viewed w/a
                   closed left eye, a red grid and the word "RIGHT" is 
                   visible, viewed w/a closed right eye, a blue grid and the
                   word "LEFT" is visible)
  on/off -stereo : simple routines for turning on and off stereo mode.
 
 NEW ADDITIONS
     nestedcubes : a simple stereo application modified to support
                   SoftStereo
  CheckExtension : An X program to test for the new SGI SoftStereo-in-a-window
                   implementation available on some platforms under IRIX 5.2.
		   Run this included (built on 5.1) executable to see if the
		   required "SoftStereo extension" is found on the machine 
		   you are running on or not.
     SGIStereo.o : A 4.0.5 object with XSGI extensions that allows querying
                   for and using SoftStereo under IRIX 5.2 from 4.0.5
                   built applications
       libXext.a : A sample 5.1 archive with XSGI extansions.  This should
                   NOT be used if you are compiling on IRIX on 5.2
                   or later since the library in /usr/lib surpasses this
           get.h : An example header file with definitions for the two
                   new SoftStereo modes STR_TOP and STR_BOT.  This should
                   NOT be used if you are compiling on IRIX on 5.2
                   or later since the header in /usr/include/gl surpasses this
 
 ==============================================================================
 MAKING THE EXAMPLES
 ==============================================================================
 
     The Makefile in this example is set to build for IRIX 5.2 by default.
     You will need to comment out one line in the Makefile and uncomment
     one other for IRIX 4.0.5 makes.
 
     If you are working on 5.2 or later you should use the IRIX versions
     of the following, instead of the ones included in this directory:
 
         libXext.a    in /usr/lib/libXext.a or libXext.so
         SGIStereo.h  in /usr/include/X11/extensions/SGIStereo.h
 
     To compile--as 4Dgifts user--type 'make' in this directory.  If you 
     are doing this for the first time, make will first build libstereo.a 
     from onoffstereo.c, stereopersp.c, stereowin.c, and, stereo.h.
 
 
        If you want to see:           Then execute the command(s):
       ------------------------       ----------------------------
       if stereo works properly       grid
       a fullscreen application       nestedcubes
       a windowed application         backg; sleep 2; nestedcubes -w
       a normal display               offstereo
       if SOftStereo is supported     CheckExtension
 
 
          -------------------------------------------------------
          | You will need IRIX 3.3 or later to run these demos  |
          | in the old full screen stereo mode                  |
          -------------------------------------------------------
          | You will need IRIX 5.2 or later to run the demos    |
          | which use the new SoftStereo-in-a-window mode on    |
	  |     XL - XZ - XS - Elan - Extreme - PI GR1.2        |
          -------------------------------------------------------
 
 
 ==============================================================================
 MAKING A STEREO APPLICATION
 ==============================================================================
 
 Here's a short description of what is involved in stereo-izing an application:
     
     1)  SET STEREO MODE
 
         Your application must turn on stereo by issuing a 
         setmonitor(mode) command.  You should check to see if 
         stereo mode is supported by issuing a getgdesc(GD_STEREO)
         command.   Three stereo modes are possible if SoftStereo
         is supported:
 
             STR_RECT - Traditional full screen stereo mode
             STR_BOT  - New SoftStereo-in-a-window stereo using the bottom
                        half of the X display 
             STR_TOP  - New SoftStereo-in-a-window stereo using the top
                        half of the X display
 
         Using the new API your app can inquire if SoftStereo is supported
         with:
 
             if(XSGIStereoQueryExtension(XtDisplay(widget), event, error))
                   sofStereo = TRUE;
 
         Your app can inquire what version of stereo is supported with:
 
             XSGIStereoQueryVersion(XtDisplay(widget), &majorRev, &minorRev);
 
	 There are also XSGI extensions available to set some stereo
	 characteristics controlled by the X server.  These are for 
	 applications with special requirements and are not required by 
	 basic stereo applications.
         
     2) CONSTRAIN MOUSE FOR OLD STEREO
 
         Using full screen stereo you should also constrain the mouse to
         the lower half of the screen using a setvaluator() command.
 
         In SoftStereo mode the X server will automatically constrain
         the mouse for you.
 
         (All three of the above-mentioned calls come from the Graphics 
         Library (GL)--consult 3G-section (GL Reference Manual) man 
         pages.)  A routine called stereo_on() in libstereo.a does 
         all of this for you; see the code in onoffstereo.c, and the 
         comments in stereo.h.
     
     3)  WINDOWS
 
         FULL SCREEN STEREO
 
         You must decide if the application should take over the 
         entire screen, or if it should run in (user-resizeable) 
         windows.  If it takes over the entire screen, you should 
         set up two viewports (one for each eye) in the upper and 
         lower halves of the screen.  If it should run in a window,
         you will have to open two windows, one in the upper and 
         one in the lower half of the screen.  If it runs in 
         windows, you will also probably want to put up an 
         appropriate background to cover up all of the regular, 
         non-stereo windows;  see the code in backg for an example.  
         See the code in nestedcubes for an example application, 
         and see stereo.h for some simple support routines for 
         doing stereo in windows.
 
         SOFTSTEREO IN A WINDOW
 
         SoftStereo uses only one window for both eyes.  The X server
         maintains a STEREO_BUFFER_LEFT and a STEREO_BUFFER_RIGHT 
         using just one X window.  X and Motif windows are automatically
         drawn in both buffers so the app doesn't have to deal with this.
         The app does need to draw two copies of GL images with or without
         the projection change for left and right eyes.  You don't
         need to obscure any windows in this mode since all windows
         will be usable except that their apparent height on the screen
         is doubled.  If GL windows are not drawn twice they will be
         visible to only one eye.
     
     3) A stereo application must draw its scene twice, once for the
         left-eye view, and once for the right-eye view.  The 
         'stereopersp' command in libstereo.a can be very useful for 
         generating correct perspective stereo images.  For more 
         information, see the Summer 1989 issue of the "Iris 
         Universe," (pp. 16-18, 20-22) which has a very informative
         article by Thant Tessman about stereo projections.  Again, 
         see the code in nestedcubes for an example using 
         stereopersp().
 
 
 ==============================================================================
 BUGS
 ==============================================================================
 
 It has been observed that some or all of these examples may have the
 left and right eye views reversed.  Due to an impending deadline this
 could not be confirmed or denied by testing.  Testing with stereo
 glasses is the only definitive way to ascertain this since left and
 right eye must match the stereo emitter.  If this is the case its
 relatively easy to swap the images to correct this problem.
 
 There is a known problem using setmon on XZ/Elan/Express graphics 
 under IRIX 5.1.  This problem may result in a graphics hang and/or
 Xsgi crash when using setmon.  This problem is fixed in IRIX 5.2. 
 
 offstereo always returns the display to 60hz mode which may not
 be the normal mode, especaillay on Reality Engine.
 
 If you use autoplacement on 4Dwm the nestedcubes window may be placed
 out of view.

Files of interest from "src/exampleCode/stereo/GL_5.2" directory

Source

Documentation

Reference


Select any combo of files you'd like to send yourself a compressed tar image of. Executables/scripts are indicated with a trailing `*' character. (Depending upon the browser, it may be necessary to hold down the Ctrl key to select/deselect disjoint items.) a compressed tar image of the above-selected items.
OR, ...
a compressed tar image of the entire GL_5.2 directory.

Copyright © 1995, Silicon Graphics, Inc.